home *** CD-ROM | disk | FTP | other *** search
- /*
- * proto.h -- function prototypes
- *
- * $Id: proto.h,v 1.13 1994/12/31 21:02:55 parrt Exp parrt $
- * $Revision: 1.13 $
- *
- * SOFTWARE RIGHTS
- *
- * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
- * Set (PCCTS) -- PCCTS is in the public domain. An individual or
- * company may do whatever they wish with source code distributed with
- * PCCTS or the code generated by PCCTS, including the incorporation of
- * PCCTS, or its output, into commerical software.
- *
- * We encourage users to develop software with PCCTS. However, we do ask
- * that credit is given to us for developing PCCTS. By "credit",
- * we mean that if you incorporate our source code into one of your
- * programs (commercial product, research project, or otherwise) that you
- * acknowledge this fact somewhere in the documentation, research report,
- * etc... If you like PCCTS and have developed a nice tool with the
- * output, please mention that you developed it using PCCTS. In
- * addition, we ask that this header remain intact in our source code.
- * As long as these guidelines are kept, we expect to continue enhancing
- * this system and expect to make other tools available as they are
- * completed.
- *
- * ANTLR 1.31
- * Terence Parr
- * Parr Research Corporation
- * with Purdue University and AHPCRC, University of Minnesota
- * 1989-1995
- */
-
- /* V a r i a b l e s */
-
- extern int tp;
- extern Junction *SynDiag;
- extern char Version[];
- extern char VersionDef[];
- #ifdef __cplusplus
- extern void (*fpPrint[])(...);
- #else
- extern void (*fpPrint[])();
- #endif
- #ifdef __cplusplus
- extern struct _set (*fpReach[])(...);
- #else
- extern struct _set (*fpReach[])();
- #endif
- #ifdef __cplusplus
- extern struct _tree *(*fpTraverse[])(...);
- #else
- extern struct _tree *(*fpTraverse[])();
- #endif
- #ifdef __cplusplus
- extern void (**fpTrans)(...);
- #else
- extern void (**fpTrans)();
- #endif
- #ifdef __cplusplus
- extern void (**fpJTrans)(...);
- #else
- extern void (**fpJTrans)();
- #endif
- #ifdef __cplusplus
- extern void (*C_Trans[NumNodeTypes+1])(...);
- #else
- extern void (*C_Trans[])();
- #endif
- #ifdef __cplusplus
- extern void (*C_JTrans[NumJuncTypes+1])(...);
- #else
- extern void (*C_JTrans[])();
- #endif
- extern int BlkLevel;
- extern int CurFile;
- extern char *CurRule;
- extern Junction *CurRuleBlk;
- extern RuleEntry *CurRuleNode;
- extern ListNode *CurElementLabels;
- extern char *FileStr[];
- extern int NumFiles;
- extern int EpToken;
- extern int WildCardToken;
- extern Entry **Tname,
- **Texpr,
- **Rname,
- **Fcache,
- **Tcache,
- **Elabel,
- **Sname;
- extern ListNode *ExprOrder;
- extern ListNode **Cycles;
- extern int TokenNum;
- extern int LastTokenCounted;
- extern ListNode *BeforeActions, *AfterActions, *LexActions;
- extern ListNode *eclasses, *tclasses;
- extern char *HdrAction;
- extern FILE *ErrFile;
- extern char *RemapFileName;
- extern char *ErrFileName;
- extern char *DlgFileName;
- extern char *DefFileName;
- extern char *ModeFileName;
- extern int NumRules;
- extern Junction **RulePtr;
- extern int LL_k;
- extern int CLL_k;
- extern char *decodeJType[];
- extern int PrintOut;
- extern int PrintAnnotate;
- extern int CodeGen;
- extern int LexGen;
- extern int esetnum;
- extern int setnum;
- extern int wordnum;
- extern int GenAST;
- extern int GenANSI;
- extern int **FoStack;
- extern int **FoTOS;
- extern int GenExprSets;
- extern FILE *DefFile;
- extern int CannotContinue;
- extern int GenCR;
- extern int GenLineInfo;
- extern int action_file, action_line;
- extern int TraceGen;
- extern int CurAmbigAlt1, CurAmbigAlt2, CurAmbigline, CurAmbigfile;
- extern char *CurAmbigbtype;
- extern int elevel;
- extern int GenEClasseForRules;
- extern FILE *input, *output;
- extern char **TokenStr, **ExprStr;
- extern int CurrentLexClass, NumLexClasses;
- extern LClass lclass[];
- extern char LexStartSymbol[];
- extern char *CurRetDef;
- extern char *CurParmDef;
- extern int OutputLL_k;
- extern int TreeResourceLimit;
- extern int DemandLookahead;
- extern char *RulePrefix;
- extern int GenStdPccts;
- extern char *stdpccts;
- extern int ParseWithPredicates;
- extern int ConstrainSearch;
- extern int FoundGuessBlk;
- extern int FoundException;
- extern int WarningLevel;
- extern int pLevel;
- extern int pAlt1;
- extern int pAlt2;
- extern int AImode;
- extern int HoistPredicateContext;
- extern int GenCC;
- extern char *ParserName;
- extern char *StandardSymbols[];
- extern char *ASTSymbols[];
- extern set reserved_positions;
- extern set all_tokens;
- extern set imag_tokens;
- extern set tokclasses;
- extern ListNode *ForcedTokens;
- extern int *TokenInd;
- extern FILE *Parser_h, *Parser_c;
- extern char CurrentClassName[];
- extern int no_classes_found;
- extern char Parser_h_Name[];
- extern char Parser_c_Name[];
- extern ListNode *class_actions;
- extern char *UserTokenDefsFile;
- extern int UserDefdTokens;
- extern ListNode *MetaTokenNodes;
- extern char *OutputDirectory;
- extern int DontCopyTokens;
- extern set AST_nodes_refd_in_actions;
- extern ListNode *CurExGroups;
- extern int CurBlockID;
- extern int CurAltNum;
- extern Junction *CurAltStart;
- extern ExceptionGroup *DefaultExGroup;
- extern int NumSignals;
-
-
- #ifdef __USE_PROTOS
- extern void istackreset(void);
- extern int istacksize(void);
- extern void pushint(int);
- extern int popint( void );
- extern int istackempty( void );
- extern int topint( void );
- extern void NewSetWd( void );
- extern void DumpSetWd( void );
- extern void DumpSetWdForC( void );
- extern void DumpSetWdForCC( void );
- extern void NewSet( void );
- extern void FillSet( set );
- extern void ComputeErrorSets( void );
- extern void ComputeTokSets( void );
- extern void SubstErrorClass( set * );
- extern int DefErrSet( set *, int, char * );
- extern int DefErrSetForC( set *, int, char * );
- extern int DefErrSetForCC( set *, int, char * );
- extern void GenErrHdr( void );
- extern void dumpExpr( FILE *, char * );
- extern void addParm( Node *, char * );
- extern Graph buildAction( char *, int, int, int );
- extern Graph buildToken( char * );
- extern Graph buildWildCard( char * );
- extern Graph buildRuleRef( char * );
- extern Graph Or( Graph, Graph );
- extern Graph Cat( Graph, Graph );
- extern Graph makeOpt( Graph, int );
- extern Graph makeBlk( Graph, int );
- extern Graph makeLoop( Graph, int );
- extern Graph makePlus( Graph, int );
- extern Graph emptyAlt( void );
- extern TokNode * newTokNode( void );
- extern RuleRefNode * newRNode( void );
- extern Junction * newJunction( void );
- extern ActionNode * newActionNode( void );
- extern char * makelocks( void );
- extern void preorder( Tree * );
- extern Tree * tnode( int );
- extern void _Tfree( Tree * );
- extern Tree * tdup( Tree * );
- extern Tree * tappend( Tree *, Tree * );
- extern void Tfree( Tree * );
- extern Tree * tlink( Tree *, Tree *, int );
- extern Tree * tshrink( Tree * );
- extern Tree * tflatten( Tree * );
- extern Tree * tJunc( Junction *, int, set * );
- extern Tree * tRuleRef( RuleRefNode *, int, set * );
- extern Tree * tToken( TokNode *, int, set * );
- extern Tree * tAction( ActionNode *, int, set * );
- extern int tmember( Tree *, Tree * );
- extern Tree * tleft_factor( Tree * );
- extern Tree * trm_perm( Tree *, Tree * );
- extern void tcvt( set *, Tree * );
- extern Tree * permute( int );
- extern Tree * VerifyAmbig( Junction *, Junction *, unsigned **, set *, Tree **, Tree **, int * );
- extern set rJunc( Junction *, int, set * );
- extern set rRuleRef( RuleRefNode *, int, set * );
- extern set rToken( TokNode *, int, set * );
- extern set rAction( ActionNode *, int, set * );
- extern void HandleAmbiguity( Junction *, Junction *, Junction *, int );
- extern set First( Junction *, int, int, int * );
- extern void freeBlkFsets( Junction * );
- extern void genAction( ActionNode * );
- extern void genRuleRef( RuleRefNode * );
- extern void genToken( TokNode * );
- extern void genOptBlk( Junction * );
- extern void genLoopBlk( Junction *, Junction *, Junction *, int );
- extern void genLoopBegin( Junction * );
- extern void genPlusBlk( Junction * );
- extern void genSubBlk( Junction * );
- extern void genRule( Junction * );
- extern void genJunction( Junction * );
- extern void genEndBlk( Junction * );
- extern void genEndRule( Junction * );
- extern void genHdr( int );
- extern void genHdr1( int );
- extern void dumpAction( char *, FILE *, int, int, int, int );
- extern Entry ** newHashTable( void );
- extern Entry * hash_add( Entry **, char *, Entry * );
- extern Entry * hash_get( Entry **, char * );
- extern void hashStat( Entry ** );
- extern char * mystrdup( char * );
- extern void genLexDescr( void );
- extern void dumpLexClasses( FILE * );
- extern void genDefFile( void );
- extern void DumpListOfParmNames( char *, FILE * );
- extern int DumpNextNameInDef( char **, FILE * );
- extern void DumpOldStyleParms( char *, FILE * );
- extern void DumpType( char *, FILE * );
- extern int strmember( char *, char * );
- extern int HasComma( char * );
- extern void DumpRetValStruct( FILE *, char *, int );
- extern char * StripQuotes( char * );
- extern int main( int, char *[] );
- extern void readDescr( void );
- extern FILE * NextFile( void );
- extern char * outname( char * );
- extern void fatalFL( char *, char *, int );
- extern void fatal_intern( char *, char *, int );
- extern void cleanUp( void );
- extern char * eMsg3( char *, char *, char *, char * );
- extern char * eMsgd( char *, int );
- extern void s_fprT( FILE *, set );
- extern char * TerminalString( int );
- extern void lexclass( char * );
- extern void lexmode( int );
- extern int LexClassIndex( char * );
- extern int hasAction( char * );
- extern void setHasAction( char *, char * );
- extern int addTname( char * );
- extern int addTexpr( char * );
- extern int Tnum( char * );
- extern void Tklink( char *, char * );
- extern Entry * newEntry( char *, int );
- extern void list_add( ListNode **, void * );
- extern void list_apply( ListNode *, void (*)(void *) );
- extern char * Fkey( char *, int, int );
- extern void FoPush( char *, int );
- extern void FoPop( int );
- extern void RegisterCycle( char *, int );
- extern void ResolveFoCycles( int );
- extern void pJunc( Junction * );
- extern void pRuleRef( RuleRefNode * );
- extern void pToken( TokNode * );
- extern void pAction( ActionNode * );
- extern void FoLink( Node * );
- extern void addFoLink( Node *, char *, Junction * );
- extern void GenCrossRef( Junction * );
- extern void defErr( char *, long, long, long, long, long, long );
- extern void genStdPCCTSIncludeFile(FILE *);
- extern Predicate *find_predicates(Node *);
- extern void GenRulePrototypes(FILE *, Junction *);
- extern Junction *first_item_is_guess_block(Junction *);
- extern Junction *analysis_point(Junction *);
- extern Tree *make_tree_from_sets(set *, set *);
- extern Tree *tdup_chain(Tree *);
- extern Tree *tdif(Tree *, Predicate *, set *, set *);
- extern set covered_set(Predicate *);
- extern void AmbiguityDialog(Junction *, int, Junction *, Junction *, int *, int *);
- extern void dumpAmbigMsg(set *, FILE *, int);
- extern void GenRuleFuncRedefs(FILE *, Junction *);
- extern void GenPredefinedSymbolRedefs(FILE *);
- extern void GenASTSymbolRedefs(FILE *);
- extern void GenRemapFile(void);
- extern void GenSetRedefs(FILE *);
- extern ForcedToken *newForcedToken(char *, int);
- extern void RemapForcedTokens(void);
- extern char *TokenOrExpr(int);
- extern void setUpperRange(TokNode *, char *);
- extern void GenParser_c_Hdr(void);
- extern void GenParser_h_Hdr(void);
- extern void GenRuleMemberDeclarationsForCC(FILE *, Junction *);
- extern int addForcedTname( char *, int );
- extern char *OutMetaName(char *);
- extern void warnNoFL(char *err);
- extern void warnFL(char *err,char *f,int l);
- extern void warn(char *err);
- extern void warnNoCR( char *err );
- extern void errNoFL(char *err);
- extern void errFL(char *err,char *f,int l);
- extern void err(char *err);
- extern void errNoCR( char *err );
- extern Tree *tmake(Tree *root, ...);
- extern void genPredTree( Predicate *p, Junction *j );
- extern UserAction *newUserAction(char *);
- extern char *gate_symbol(char *name);
- extern char *makeAltID(int blockid, int altnum);
- extern void DumpRemainingTokSets();
- extern void DumpANSIFunctionArgDef(FILE *f, Junction *q);
- #else
- extern void istackreset();
- extern int istacksize();
- extern void pushint();
- extern int popint();
- extern int istackempty();
- extern int topint();
- extern void NewSetWd();
- extern void DumpSetWd();
- extern void DumpSetWdForC();
- extern void DumpSetWdForCC();
- extern void NewSet();
- extern void FillSet();
- extern void ComputeErrorSets();
- extern void ComputeTokSets();
- extern void SubstErrorClass();
- extern int DefErrSet();
- extern int DefErrSetForC();
- extern int DefErrSetForCC();
- extern void GenErrHdr();
- extern void dumpExpr();
- extern void addParm();
- extern Graph buildAction();
- extern Graph buildToken();
- extern Graph buildWildCard();
- extern Graph buildRuleRef();
- extern Graph Or();
- extern Graph Cat();
- extern Graph makeOpt();
- extern Graph makeBlk();
- extern Graph makeLoop();
- extern Graph makePlus();
- extern Graph emptyAlt();
- extern TokNode * newTokNode();
- extern RuleRefNode * newRNode();
- extern Junction * newJunction();
- extern ActionNode * newActionNode();
- extern char * makelocks();
- extern void preorder();
- extern Tree * tnode();
- extern void _Tfree();
- extern Tree * tdup();
- extern Tree * tappend();
- extern void Tfree();
- extern Tree * tlink();
- extern Tree * tshrink();
- extern Tree * tflatten();
- extern Tree * tJunc();
- extern Tree * tRuleRef();
- extern Tree * tToken();
- extern Tree * tAction();
- extern int tmember();
- extern Tree * tleft_factor();
- extern Tree * trm_perm();
- extern void tcvt();
- extern Tree * permute();
- extern Tree * VerifyAmbig();
- extern set rJunc();
- extern set rRuleRef();
- extern set rToken();
- extern set rAction();
- extern void HandleAmbiguity();
- extern set First();
- extern void freeBlkFsets();
- extern void genAction();
- extern void genRuleRef();
- extern void genToken();
- extern void genOptBlk();
- extern void genLoopBlk();
- extern void genLoopBegin();
- extern void genPlusBlk();
- extern void genSubBlk();
- extern void genRule();
- extern void genJunction();
- extern void genEndBlk();
- extern void genEndRule();
- extern void genHdr();
- extern void genHdr1();
- extern void dumpAction();
- extern Entry ** newHashTable();
- extern Entry * hash_add();
- extern Entry * hash_get();
- extern void hashStat();
- extern char * mystrdup();
- extern void genLexDescr();
- extern void dumpLexClasses();
- extern void genDefFile();
- extern void DumpListOfParmNames();
- extern int DumpNextNameInDef();
- extern void DumpOldStyleParms();
- extern void DumpType();
- extern int strmember();
- extern int HasComma();
- extern void DumpRetValStruct();
- extern char * StripQuotes();
- extern int main();
- extern void readDescr();
- extern FILE * NextFile();
- extern char * outname();
- extern void fatalFL();
- extern void fatal_intern();
- extern void cleanUp();
- extern char * eMsg3();
- extern char * eMsgd();
- extern void s_fprT();
- extern char * TerminalString();
- extern void lexclass();
- extern void lexmode();
- extern int LexClassIndex();
- extern int hasAction();
- extern void setHasAction();
- extern int addTname();
- extern int addTexpr();
- extern int Tnum();
- extern void Tklink();
- extern Entry * newEntry();
- extern void list_add();
- extern void list_apply();
- extern char * Fkey();
- extern void FoPush();
- extern void FoPop();
- extern void RegisterCycle();
- extern void ResolveFoCycles();
- extern void pJunc();
- extern void pRuleRef();
- extern void pToken();
- extern void pAction();
- extern void FoLink();
- extern void addFoLink();
- extern void GenCrossRef();
- extern void defErr();
- extern void genStdPCCTSIncludeFile();
- extern Predicate *find_predicates();
- extern void GenRulePrototypes();
- extern Junction *first_item_is_guess_block();
- extern Junction *analysis_point();
- extern Tree *make_tree_from_sets();
- extern Tree *tdup_chain();
- extern Tree *tdif();
- extern set covered_set();
- extern void AmbiguityDialog();
- extern void dumpAmbigMsg();
- extern void GenRuleFuncRedefs();
- extern void GenPredefinedSymbolRedefs();
- extern void GenASTSymbolRedefs();
- extern void GenRemapFile();
- extern void GenSetRedefs();
- extern ForcedToken *newForcedToken();
- extern void RemapForcedTokens();
- extern char *TokenOrExpr();
- extern void setUpperRange();
- extern void GenParser_c_Hdr();
- extern void GenParser_h_Hdr();
- extern void GenRuleMemberDeclarationsForCC();
- extern int addForcedTname();
- extern char *OutMetaName();
- extern void warnNoFL();
- extern void warnFL();
- extern void warn();
- extern void warnNoCR();
- extern void errNoFL();
- extern void errFL();
- extern void err();
- extern void errNoCR();
- extern Tree *tmake();
- extern void genPredTree();
- extern UserAction *newUserAction();
- extern char *gate_symbol();
- extern char *makeAltID();
- extern void DumpRemainingTokSets();
- extern void DumpANSIFunctionArgDef();
- #endif
-
- #ifdef __USE_PROTOS
- #include <stdlib.h>
- #endif
-